From: Florian Müllner Date: Fri, 6 Dec 2019 17:07:35 +0000 (+0100) Subject: popupMenu: Close when a system modal pops up X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~322 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ccd8b47d3024dc79535e6b484d5b5284c901fdc3;p=gnome-shell.git popupMenu: Close when a system modal pops up Just like switcher popups, popup menus don't play well together with system modals, and generally have a lower priority. So just like switcher popups, close popup menus when a system modal dialog pops up. https://gitlab.gnome.org/GNOME/gnome-shell/issues/1536 --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 53a1cd170..c3e763b36 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -817,6 +817,7 @@ var PopupMenu = class extends PopupMenuBase { this._onKeyPress.bind(this)); } + this._systemModalOpenedId = 0; this._openedSubMenu = null; } @@ -891,6 +892,11 @@ var PopupMenu = class extends PopupMenuBase { if (this.isEmpty()) return; + if (!this._systemModalOpenedId) { + this._systemModalOpenedId = + Main.layoutManager.connect('system-modal-opened', () => this.close()); + } + this.isOpen = true; this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment); @@ -921,6 +927,11 @@ var PopupMenu = class extends PopupMenuBase { destroy() { if (this._keyPressId) this.sourceActor.disconnect(this._keyPressId); + + if (this._systemModalOpenedId) + Main.layoutManager.disconnect(this._systemModalOpenedId); + this._systemModalOpenedId = 0; + super.destroy(); } };